/*
Date:20210411 17:25pm
key:遍历一次找到最高点，然后每一层遍历一次，双指针碰头并不是循环终结条件，层数才是，你好傻。
*/
class Solution {
public:

    int trap(vector<int>& height) 
    {
        if(height.size()<2)
        {
            return 0;
        }
        //先遍历一次，得到最高点
        //先遍历一次，得到最高点
        int max_high=0;
        int max=0;
        for(auto i:height)
        {
            max+=i;
            if(i>max_high)
            {
                max_high=i;
            }
        }
        


        int count=0;
        int top=1;
        int this_lay;
        int i=0;
        int j=height.size()-1;
        while(max_high--)
        {
            this_lay =0;
            while(height[i]<top)
            {
                i++;
            }
            while(height[j]<top)
            {
                j--;
            }
            if(i==j)//这层只有有一个顶峰，如实例第三层
            {
                count++;
                
            }
            else
            {
                this_lay=j-i+1;
            }
            count+=this_lay;
            ++top;
            
        }

    return count-max;
    }
};